Arbitrary-resolution, extreme-quality video codec

ABSTRACT

Image data to be compressed is first converted from the RGB domain into a gamma-powered YUV domain. A wavelet transform then separates image data into high- and low-detail sectors, incorporating a dynamic scaling method, allowing for optimal resolution. The output data from the wavelet transform is then quantized according to an entropy-prediction algorithm that tightly controls the final size of the processed image. An adaptive Golomb engine compresses the data using an adaptive form of Golomb encoding in which mean values are variable across the data. Using variable mean values reduces the deleterious effects found in conventional Golomb encoding in which localized regions of similar data are inefficiently coded if their bit values are uncommon in the data as a whole. Inverse functions are applied to uncompress the image, and a fractal dithering engine can additionally be applied to display an image on a display of lower color depth.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims the benefit under 35 U.S.C. §120 as acontinuation of patent application Ser. No. 10/875,058, filed on Jun.22, 2004 entitled “Arbitrary-Resolution, Extreme Quality Video Codec”,which is incorporated herein by reference in its entirety.

This application is related to U.S. patent application Ser. No.10/826,927, filed on Apr. 16, 2004, which is incorporated by referenceherein in its entirety.

This application is also related to U.S. patent application Ser. No.10/874,796 to Crandall et al, filed on Jun. 22, 2004 and entitled“Fractal-Dithering Technique for Image Display,” also incorporated byreference herein in its entirety.

BACKGROUND

1. Field of the Invention

The present invention is related to the encoding of video streams. Inparticular, the present invention is directed to a high quality waveletvideo codec.

2. Description of the Related Art

There is a need in the art for a way to achieve full screen real-timeplayback of high quality movies using a conventional desktop computersystem. Although conventional methods have attempted to satisfy thisneed, they have been largely unsuccessful for a variety of reasons.

One conventional method for providing video playback is by transformingthe video signal from the configuration domain into the frequencydomain. Frequency-domain video compression is used in such standards asMPEG-2, MPEG-4, Windows Media, etc. Furthermore, most frequency-domaintechniques also involve motion vectors to give further compression inthe time domain by keying off of a key frame with a motion vector. Sucha process makes random access to frames a time-intensive process, makingit difficult to do video editing, also known as “scrubbing”, in which auser should be able to quickly advance forward and backward through thevideo.

An alternative conventional solution is to encode a video streamaccording to a standard optimized for still images, such as the JPEGstandard. However, single frame encoding algorithms are not typicallyfast enough to be displayed at real-time rates such as 24-frames persecond. In addition, because of differences from one frame to the next,artifacts such as boiling and shimmering can occur. Entities (humans,cartoons, etc.) appearing against a background such as a textured wallare particularly disposed to these effects. And, while wavelettechnology with a compression-ratio goal of about 1 bit per pixel—atleast for still-frame applications—has been around since the 1980s, ithas achieved such ratios only for playback at insufficient quality.Wavlet compression of high-quality video has remained elusive to date.

Accordingly, there is a need for a system and method for encoding videothat yields very high quality images while smoothly playing at fullvideo speeds.

SUMMARY OF THE INVENTION

The present invention provides a system and method for encoding videothat yields very high quality images while smoothly playing at fullvideo speeds. Image data is first converted by the present inventionfrom the RGB domain into a gamma-powered YUV domain. A wavelet transformthen separates image data into high- and low-detail sectors,incorporating a dynamic scaling method, which allows for optimalresolution, i.e. an optimal number of bits in wavelet results,per-sector, and enhances the resolution of all sectors. The output datafrom the wavelet transform is then quantized according to anentropy-prediction algorithm that tightly controls the final size of theprocessed image. An adaptive Golomb engine next performs a^(└)compression step, using an adaptive form of Golomb encoding in whichmean values are variable across the data. The use of variable meanvalues reduces the deleterious effects found in conventional Golombencoding in which localized regions of similar data are inefficientlycoded if their bit values are uncommon in the data as a whole.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of a system in accordance with an embodimentof the present invention.

FIG. 2 is a flow chart illustrating a method for compressing video inaccordance with an embodiment of the present invention.

FIG. 3 is a flow chart illustrating dynamic scaling in a wavelettransform in accordance with an embodiment of the present invention.

FIG. 4A is a graph illustrating a one-pass ratio versus time for atypical movie clip in accordance with an embodiment of the presentinvention.

FIG. 4B is a graph illustrating a two-pass ratio versus time for atypical movie clip in accordance with an embodiment of the presentinvention.

FIG. 5 is a flow chart illustrating operation of an adaptive Golombengine in accordance with an embodiment of the present invention.

The figures depict preferred embodiments of the present invention forpurposes of illustration only. One skilled in the art will readilyrecognize from the following discussion that alternative embodiments ofthe structures and methods illustrated herein may be employed withoutdeparting from the principles of the invention described herein.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

FIG. 1 illustrates a block diagram of a system in accordance with anembodiment of the present invention. FIG. 1 includes a pre-processingengine 102, a wavelet transform 104, a quantizer 106, an adaptive Golombengine 108, and a fractal dithering engine 114. Also illustrated in FIG.1 are a data source 110, and a composed stream 112.

Referring both to FIG. 1 and FIG. 2, the uncompressed data from datasource 110 is transmitted to system 100 and received 202 bypre-processing engine 102. If the data includes 203 color data,pre-processing engine 102 transforms 204 the data in a manner asdescribed below. After the data has been transformed by pre-processingengine 102, if applicable, or else after it is received 202, it ispassed to wavelet transform 104, which transforms 206 original pixeldata into the resolution domain using coefficients that are dynamicallyselected for the wavelet transform to maximize dynamic range of thewavelet values. Wavelet transform 104 then passes the processed data toquantizer 106, which performs 208 a quantization as described below. Theresult of the quantization is then provided to adaptive Golomb engine108. Adaptive Golomb engine 108 performs 210 a compression, as describedbelow with respect to FIG. 5, and outputs 212 a compressed stream ofdata. Composed stream 110 can then be output to a storage device,transmitted to a remote location, etc.

Pre-Processing Engine

In a preferred embodiment, pre-processing engine 102 transforms anoriginal, 48-bit RGB image into the YUV domain, with the U,V channelseach sub-sampled 2-by-2 to obtain an image in YUV420 format, and inwhich the Y channel is gamma-powered, i.e. Y→Y′:=Y^(γ). Thistransformation reduces artifacts in dark regions that would otherwise beobjectionable. Taking γ=½, for example, allows higher resolution for thedark regions. The sub-sampling effectively provides 24 bits per pixelfor the triples (Y′, U, V), resulting in an initial gain of 2:1 over a48-bit original image. As is known by those of skill in the art, U,Vsub-sampling is typically undetectable to the human eye—and even more sowhen motion is involved. Once transformed by pre-processing engine 102,the data stream is then passed to wavelet transform 104.

Wavelet Transform

The Y′UV data with Y′ as the gamma-warped value Y^(γ) is thenwavelet-transformed by wavelet transform 104. As is known in the art, awavelet transform is a mathematical way of separating high frequencydata from lower frequency data. For example, in one embodiment the Burt5/7 biorthogonal wavelet is employed. In addition to the conventionalaspect of the wavelet transform, wavelet transform 104 additionallyemploys dynamic scaling. Referring now to FIG. 3, dynamic scalingaccording to the present invention is a method whereby the waveletcoefficients are changed as wavelet sectors are processed. Inparticular, for every received stage of the forward wavelet 302, minimumand maximum values of the input data are gathered 304. Based on theseminimum and maximum values and the coefficients used in the unscaledBurt 5/7 transform, wavelet transform 104 estimates 306 the maximumpossible resulting output values of the transform and scales 308 thewavelet coefficients such that the output values will make use of thefull dynamic range of 16-bit fixed-point values without saturation. Thescaling factor for each stage is recorded 310 in the encoded stream, sothat the inverse wavelet stages can reverse this scaling.

The dynamic scaling method of the present invention allows for optimalresolution, i.e. an optimal number of bits in wavelet results,per-sector, and enhances the resolution of all sectors. In particular,the scalar sector of the wavelet-transformed image preferably has anoptimal resolution This in turn helps to minimize the boiling effectdescribed above that plagues many conventional wavelet codecs.

After the data stream has been transformed by wavelet transform 104, itis passed to the quantizer 106.

Quantizer

Following transformation by wavelet transform 104, each non-scalarsector of the wavelet preferably has a statistic that is Laplacian, i.e.enjoys a probability density in (bipolar) wavelet values w such that:

${{f(w)} \approx {\frac{1}{2\; m}^{{- {w}}/m}}},$

and so with absolute-mean <|w|>=m. Quantizer 106 quantizes in a standardfashion (see [Taubman and Marcellin 2001] for variants for basicquantization of transform values), except that for removal of boilingartifacts and of non-local perturbations (where some part of a moviedisplay affects remote parts), quantizer 106 does not quantize thescalar sector. The scalar sector is run through a standardpredictor-corrector and the resulting data is then compressed byadaptive G^(└)olomb engine 108, losslessly, which enhances movie qualityby reducing such artifacts as shimmering and boiling and nonlocalityproblems.

In quantizing a wavelet value w by a quantization integer q, quantizer106 preferably adds

$\bullet \frac{q}{2\bullet}$

to w before quantization, so that the maximal reconstruction error is

$\pm {\frac{q}{2}.}$

Specifically, a wavelet value w becomes

$w^{\prime} = {{{trunc}\left( \frac{w + {{{sign}(w)}\bullet \frac{q}{2}\bullet}}{q} \right)}.}$

The result of this quantization is a beaded Laplacian density fornonscalar sectors.

Ratio Control

Ratio control allows a user to specify a compression ratio to quantizer106 for a given input stream. Ratio control is preferably performed on aper-frame basis. In a preferred embodiment, a graph of ratio versusframe tends to show the specified ratio, with limited but reasonableexcursions. In a preferred embodiment, a tri-modal solution including aone-pass encoder, a two-pass encoder, and a search encoder is run byquantizer 106 as follows.

One-pass encoder: Let m′ denote the absolute-mean of quantized waveletvalues w′ for a given channel/sector. We use an estimation formula forthe entropy E of a sector that is given a quantization integer q:

E(q)≈at(q)+b√{square root over (m′(q))}A

where t is the number of nonzero w′ tokens in the sector, A is thepixel-area of the sector, and a,b are constants that are empiricallydetermined according to the particular source material. In oneembodiment, the constants are empirically determined by fittingoptimally descriptive curves to sector-entropy measures of a series offrames from source material. This formula allows quantizer 106 torapidly estimate E(q) for q running through a small set of powers of 2.In this way, quantizations q=2^(k) are actually tested to the pointwhere t(q),m′(q) are computed and the sum of E over sectors is comparedto the target entropy. Interpolation is then used as the desired q valuefor target ratio is between two powers of 2.

An advantage of this one-pass method is that only one call to adaptiveGolomb engine 108 is required. FIG. 4A illustrates a typical movieclip's one-pass ratio versus time. In FIG. 4A, frame numbers 402 arealong the x-axis and compression ratios 404 are along the y-axis. Thehorizontal line 406 is the target ratio—to which every frame is ideallycompressed. Line 408 connects data points, one at each frame number,showing the one-pass ratio for each image. Ideally, line 408 should hugthe target ratio as closely as possible, meaning that there is finecontrol over compressed image sizes, which can be important for playingvideo—if a frame is too big it will take too long to decode and cause astutter in video playback.

In an alternative embodiment, a two-pass encoder is used for tighterratio control. An initial pass is evaluated against the target ratio,and one interpolation for the quantizer 106 is then invoked for tightratio estimate. If the target ratio is R and a 1-pass result isempirically R₁—that is, R1 is the ratio determined by the output of theadaptive Golomb engine—then quantizer 106 aims for a “phantom” ratio R₂given by:

${R_{2} = \frac{R^{2}}{R_{1}}},$

in this way determining a new set of quantizer q values for a moreaccurate (i.e. closer to R target) ratio result. For example, assume thetarget ratio is 25 and the actual ratio after the first compression R₁is 18.75. This means the ratio was only 75% as large as desired. Thepredictor therefore gets a new target of 33.333, which assumes that thesecond compression ratio will also be 75% of the target. Since 25 is 75%of 33.33, the new target will arrive approximately at the originaltarget ratio. FIG. 4B illustrates an example of two-pass encoding, fromwhich it can be seen that the second pass line c10 is closer to thetarget 406 than was the single-pass line 408 of FIG. 4A.

Adaptive Golomb Engine

The compressed image stream output from quantizer 106 is then providedas input to adaptive Golomb engine 108. A Golomb encoder is an efficientway to represent data having a Laplacian distribution, such as the dataoutput from quantizer 106. Data encoded using a Golomb encoder typicallyhas a format including both unary and binary components.

As is known in the art, Golomb coding involves representing the mostfrequently-occurring values using tokens having a small number of bits.This results in a form of compression, since the tokens generally willhave fewer bits than the pixel values they replace. However, there canexist areas of an image in which there are a series of values having amagnitude very different from the most frequently-occurring values, andyet which repeat often within the local region. For example, if thepixel value “230” is not common overall in the image data, it willlikely not be a value selected for large savings using a small token.However, it may be the case that there is a region of the image withmany values of or near “230”, even though the region is not largecompared with the rest of the image. A conventional Golomb coding schemesacrifices the extra bits used to repeat these values in order toachieve an overall satisfactory compression level. That is, if a tokenof fewer bits were used to express “230”, more bits would be requiredfor a different token, and the overall compression rate would decrease.

System 100 improves upon this conventional method using adaptive Golombengine 108. Adaptive Golomb Engine (AG) 108 determines how many bits touse for a token based on a region more localized than the overall image.AG 108 determines a mean, which is preferably a weighted average of themost recent values encountered by the AG 108. For example, in oneembodiment the previous ten values are considered. Because the mean is amoving average, if recent values have been close to, say, “230”, thenthe mean will trend toward “230”. On the other hand, if recent valueshave been closer to another value, e.g., “3”, then the mean will trendtoward “3”. Because the mean is not fixed for an entire set of data, AG108 therefore is able to achieve an optimal level of compression on amore local level than is achieved using non-adaptive Golomb coding.

FIG. 5 illustrates a flow chart of the operation of adaptive Golombengine 108. First, AG 108 sets (502) its mean to an initial value, whichis preferably derived empirically. For example, in one embodiment themean is 3. Next, AG 108 applies (504) the Golomb coding as describedabove to a pixel to be encoded. If (506) more pixels remain, then themean is updated (508) to reflect a moving average of the most recentpixels, and the next pixel is encoded (510) using the updated mean. Onceno more data (506) remains, the AG process terminates and outputs thestream of compressed data.

Decompression

Decoding of composed stream 112 proceeds generally according to theinverse of the above functions. The adaptive Golomb Engine 108 decodesthe composed stream 112 by tracking the mean-update algebra forcoherence. Quantizer 106 reverses the quantization previously performed(though some data is lost by virtue of the quantization function), andwavelet transform 104 performs the inverse wavelet transformation usingthe dynamic-scaling algebra applied in the original transformation.Pre-processing Engine 102 obtains Y from the equation Y=(Y′)^(1/γ), andthe reconstruction of a facsimile of the original RGB is thus obtainedby standard means of U,V supersampling. The uncompressed image is nextpassed to fractal dithering engine 114 for dithering.

Fractal Dithering Engine

The Fractal Dithering Engine 114 allows 48-bit RGB to be displayed on a24-bit monitor—more precisely, a conventional monitor expecting 24-bitinput—for many monitors do not actually realize the full 24-bit colordynamic). In this algorithm, a triple

(R,G,B)=(2⁸ R _(u) +R _(l),2 ⁸ G _(u) +G _(l),2 ⁸ B _(u) +B _(l)),

where each upper (u) and lower (l) component is a byte, is transformedin a spatially-deterministic fashion to a displayed triple

(R′,G′,B′)=(F(R _(u) ,R _(l) ,x,y),F(G _(u) ,G _(l) ,x,y),F(B _(u) ,B_(l) ,x,y).

Here, F is a fractal-dither function. Note that if the function F werejust the degenerate form F(C_(u),C_(l),x,y)=C_(u), then we would simplybe truncating the 48-bit RGB to the high byte, for display. But apreferred embodiment takes account of C_(l) and the spatial coordinates(x,y). This technique removes essentially all banding attendant on thelimitations of 24-bit resolution. The Fractal Dithering Engine 114 isdescribed in detail in U.S. patent application Ser. No. 10/______,entitled Fractal-Dithering Technique for Image Display, to Crandall etal., filed on Jun. 22, 2004, commonly assigned, and incorporated hereinby reference in its entirety.

The uncompressed, dithered image is then ready for output to a displayscreen or other output device.

Vectorization

In one embodiment, many steps of the encode and decode process describedabove benefit from Streaming Single-Instruction-Multiple-Data (SIMD)vectorization. In particular, color space conversion, wavelettransforms, and quantization are well suited to vector implementations.Because memory bandwidth is a relevant concern in optimizing ahigh-definition, high-quality codec, it is preferable that as muchprocessing as possible be done per pass through the data, to minimizethe per-frame memory bandwidth requirements.

In one embodiment, the initial color space conversion performed bypre-processing engine 102 is vectorized, and includes not only the colorspace conversion, but also the nonlinear gamma adjustment of the Ychannel. It also reports the minimum and maximum output of each channel,which can then be used to calculate the dynamically scaled waveletcoefficients for the first stage of the wavelet transform by wavelettransform 104. While doing the wavelet transform, maximum and minimumoutput values are collected, so that the successive wavelet stage'sdynamic coefficients can be calculated in turn. The forward wavelet passis in one embodiment implemented using floating-point arithmetic. Thoughthis is slower than a fixed-point implementation (as it requiresconversion from fixed point to floating point and back, and only allowsfour elements per vector for wavelet algebra) it provides higherprecision in the resulting encoded data. As speed is important in decodeand playback, the inverse wavelet transform is preferably implementedusing fixed-point arithmetic. Quantization is done in a separate pass ofthe data, and is preferably implemented using a SIMD floating-pointreciprocal multiply. In decoding, the dequantization stage is in oneembodiment included in the adaptive-Golomb decode operation, as it onlyadds a few simple arithmetic instructions to the decode process.Optimization of the color space conversion on decode in one embodimenttakes advantage of SIMD vectorization, and includes inverse gammacorrection of the Y channel, as well as the fractal dither of the RGBoutput channels.

In one embodiment, the wavelet transform is not implemented as anin-place transform, so the transform is typically either out-of-place,or requires the use of a temporary buffer. For a two-dimensionaltransform, we have eliminated the need for temporary buffers andunnecessary copying of the source or output data. We allocate buffersfor each of the YUV planes that accommodate an extra row and extraprocessing column. A processing column preferably includes 128-bitvectors (8 16-bit elements), whereas a scalar implementation would use asingle column of singleton elements. Original YUV data is offset one rowand one processing column from the origin. In the horizontal stage ofthe wavelet transform, the output of each row is offset up by one rowand left by one processing column, and thus avoids overwriting anyexisting data. The vertical transform in one embodiment starts from therightmost processing column, and offsets the output down one row andright one processing column, again avoiding overwriting any needed data,and returning the transformed data to its original offset within thebuffer. This offset technique is preferably employed for successivedepths of the wavelet transform, and is preferably also applied to allstages of the inverse wavelet transform.

The present invention has been described in particular detail withrespect to a limited number of embodiments. Those of skill in the artwill appreciate that the invention may additionally be practiced inother embodiments. First, the particular naming of the components,capitalization of terms, the attributes, data structures, or any otherprogramming or structural aspect is not mandatory or significant, andthe mechanisms that implement the invention or its features may havedifferent names, formats, or protocols. Further, the system may beimplemented via a combination of hardware and software, as described, orentirely in hardware elements. Also, the particular division offunctionality between the various system components described herein ismerely exemplary, and not mandatory; functions performed by a singlesystem component may instead be performed by multiple components, andfunctions performed by multiple components may instead be performed by asingle component. For example, the particular functions of the wavelettransformer 104, adaptive Golomb engine 108, and so forth may beprovided in many or one module.

Some portions of the above description present the feature of thepresent invention in terms of algorithms and symbolic representations ofoperations on information. These algorithmic descriptions andrepresentations are the means used by those skilled in the audio andgraphics compression arts to most effectively convey the substance oftheir work to others skilled in the art. These operations, whiledescribed functionally or logically, are understood to be implemented bycomputer programs or hardware. Furthermore, it has also provenconvenient at times, to refer to these arrangements of operations asmodules or code devices, without loss of generality.

It should be borne in mind, however, that all of these and similar termsare to be associated with the appropriate physical quantities and aremerely convenient labels applied to these quantities. Unlessspecifically stated otherwise as apparent from the present discussion,it is appreciated that throughout the description, discussions utilizingterms such as “processing” or “computing” or “determining” or the like,refer to the action and processes of a computer system, or similarelectronic computing device, that manipulates and transforms datarepresented as physical (electronic) quantities within the computersystem memories or registers or other such information storage,transmission or display devices.

Certain aspects of the present invention include process steps andinstructions described herein in the form of an algorithm. It should benoted that the process steps and instructions of the present inventioncould be embodied in software, firmware or hardware, and when embodiedin software, could be downloaded to reside on and be operated fromdifferent platforms used by real time network operating systems.

The present invention also relates to an apparatus for performing theoperations herein. This apparatus may be specially constructed for therequired purposes, or it may comprise a general-purpose computerselectively activated or reconfigured by a computer program stored inthe computer. Such a computer program may be stored in a computerreadable storage medium, such as, but not limited to, any type of diskincluding floppy disks, optical disks, CD-ROMs, magnetic-optical disks,read-only memories (ROMs), random access memories (RAMs), EPROMs,EEPROMs, magnetic or optical cards, application specific integratedcircuits (ASICs), or any type of media suitable for storing electronicinstructions, and each coupled to a computer system bus. Furthermore,the computers referred to in the specification may include a singleprocessor or may be architectures employing multiple processor designsfor increased computing capability.

The algorithms and displays presented herein are not inherently relatedto any particular computer or other apparatus. Various general-purposesystems may also be used with programs in accordance with the teachingsherein, or it may prove convenient to construct a more specializedapparatus to perform the required method steps. The required structurefor a variety of these systems will appear from the description above.In addition, the present invention is not described with reference toany particular programming language. It is appreciated that a variety ofprogramming languages may be used to implement the teachings of thepresent invention as described herein, and any references to specificlanguages are provided for disclosure of enablement and best mode of thepresent invention.

Finally, it should be noted that the language used in the specificationhas been principally selected for readability and instructionalpurposes, and may not have been selected to delineate or circumscribethe inventive subject matter. Accordingly, the disclosure of the presentinvention is intended to be illustrative, but not limiting, of the scopeof the invention.

1. A computer-implemented method for compressing data, the methodcomprising: nonlinearly transforming the data from a first domain to asecond domain; applying a dynamically-scaled wavelet transform to thedata in the second domain; quantizing selected sectors of thetransformed data; applying a Golomb coding function to the quantizeddata to yield compressed data; and outputting the compressed data. 2.The computer-implemented method of claim 1 wherein the first domain isan RGB domain and the second domain is a YUV domain.
 3. Thecomputer-implemented method of claim 2 wherein a Y channel of the imagedata in the YUV domain is gamma-powered.
 4. The computer-implementedmethod of claim 1 wherein applying a dynamically scaled wavelettransform further comprises: receiving a stage of a forward wavelet;determining a minimum and a maximum value of the data; estimating amaximum resulting output value of the wavelet transform; and scaling thewavelet coefficients responsive to the estimated output value.
 5. Thecomputer-implemented method of claim 1 wherein the wavelet transformeddata has a Laplacian distribution.
 6. The computer-implemented method ofclaim 1 wherein the wavelet transformed data includes nonscalar sectorsand a scalar sector, and the scalar sector is not quantized.
 7. Thecomputer-implemented method of claim 6 wherein the scalar sector isprocessed by a predictor-corrector function and subjected to the Golombcoding function.
 8. The computer-implemented method of claim 1 whereinquantizing the transformed data further comprises quantizing thetransformed data according to a specified compression ratio.
 9. Thecomputer-implemented method of claim 8 wherein the compression ratio isapplied to each frame.
 10. The computer-implemented method of claim 1further comprising uncompressing the compressed data by: applying aninverse Golomb coding function to the compressed data to obtainuncompressed quantized data; applying an inverse quantization to theuncompressed quantized data to obtain wavelet-transformed data; applyingan inverse wavelet transform to obtain uncompressed data in the seconddomain; transforming the uncompressed data from the second domain to thefirst domain; and outputting the uncompressed data.
 11. Thecomputer-implemented method of claim 10 further comprising applying afractal dithering function to the uncompressed data in the first domainprior to outputting the uncompressed data.
 12. The computer-implementedmethod of claim 11 wherein the uncompressed data is output on a 48-bitvirtual display.
 13. A system for compressing data, the systemcomprising: a pre-processing engine for receiving data from a datasource and transforming the data nonlinearly from a first domain to asecond domain; a wavelet transformer, communicatively coupled to thepre-processing engine, for applying a dynamically-scaled wavelettransform to the data in the second domain; a quantizer, communicativelycoupled to the wavelet transformer, for quantizing selected sectors ofthe wavelet-transformed data; and an adaptive Golomb engine,communicatively coupled to the quantizer, for compressing the quantizeddata.
 14. The system of claim 13 wherein the first domain is an RGBdomain and the second domain is a YUV domain.
 15. The system of claim 14wherein a Y channel of the image data in the YUV domain isgamma-powered.
 16. The system of claim 13 wherein the wavelettransformer dynamically scales the wavelet transform by: receiving astage of a forward wavelet; determining a minimum and a maximum value ofthe data; estimating a maximum resulting output value of the wavelettransform; and scaling the wavelet coefficients responsive to theestimated output value.
 17. The system of claim 13 wherein thewavelet-transformed data has a Laplacian distribution.
 18. The system ofclaim 13 wherein the wavelet-transformed data includes nonscalar sectorsand a scalar sector, and the quantizer does not quantize the scalarsector.
 19. The system of claim 18 further comprising apredictor-corrector module that processes the scalar sector, and whereinthe adaptive Golomb engine additionally compresses the processed scalarsector.
 20. The system of claim 13 wherein the quantizer quantizes thetransformed data according to a specified compression ratio.
 21. Thesystem of claim 20 wherein the compression ratio is applied to eachframe.
 22. The system of claim 13 wherein: the adaptive Golomb engine isfurther configured to apply an inverse Golomb coding function to thecompressed data to obtain uncompressed quantized data; the quantizer isfurther configured to apply an inverse quantization to the uncompressedquantized data to obtain wavelet-transformed data; the wavelettransformer is further configured to apply an inverse wavelet transformto obtain uncompressed data in the second domain; and the pre-processingengine is further configured to transform the uncompressed data from thesecond domain to the first domain.
 23. The system of claim 22 furthercomprising a fractal dithering engine, communicatively coupled to thepre-processing engine, for dithering an image from a higher color depthto a lower color depth.
 24. A computer program product for compressingdata, the computer program product stored on a computer-readable mediumand including instructions for causing a processor of a computer toexecute the steps of: nonlinearly transforming the data from a firstdomain to a second domain; applying a dynamically-scaled wavelettransform to the data in the second domain; quantizing selected sectorsof the transformed data; applying a Golomb coding function to thequantized data to yield compressed data; and outputting the compresseddata
 25. A system for compressing data, the system comprising:transforming means, for nonlinearly transforming the data from a firstdomain to a second domain; wavelet transforming means, communicativelycoupled to the transforming means, for applying a dynamically-scaledwavelet transform to the data in the second domain; quantizing means,communicatively coupled to the wavelet transforming means, forquantizing selected sectors of the transformed data; Golomb codingmeans, communicatively coupled to the quantizing means, for applying aGolomb coding function to the quantized data to yield compressed data;and outputting means, communicatively coupled to the Golomb codingmeans, for outputting the compressed data.